﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Windows;

namespace VisaValeCheck
{
    internal class VisaDisplayInfoPluginWPF : DependencyObject
    {
        public string Mensagem
        {
            get { return (string)GetValue(MensagemProperty); }
            set { SetValue(MensagemProperty, value); }
        }

        // Using a DependencyProperty as the backing store for Mensagem.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty MensagemProperty =
            DependencyProperty.Register("Mensagem", typeof(string), typeof(VisaDisplayInfoPluginWPF), new UIPropertyMetadata(string.Empty));       
    }

    internal class VisaDisplayInfoWPF : DependencyObject
    {
        public string NumeroCartao
        {
            get { return (string)GetValue(NumeroCartaoProperty); }
            set { SetValue(NumeroCartaoProperty, value); }
        }

        // Using a DependencyProperty as the backing store for NumeroCartao.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty NumeroCartaoProperty =
            DependencyProperty.Register("NumeroCartao", typeof(string), typeof(VisaDisplayInfoWPF), new UIPropertyMetadata(string.Empty));
        
        public double SaldoDisponivel
        {
            get { return (double)GetValue(SaldoDisponivelProperty); }
            set { SetValue(SaldoDisponivelProperty, value); }
        }

        // Using a DependencyProperty as the backing store for SaldoDisponivel.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty SaldoDisponivelProperty =
            DependencyProperty.Register("SaldoDisponivel", typeof(double), typeof(VisaDisplayInfoWPF), new UIPropertyMetadata(0.00));

        public Compra UltimoBeneficio
        {
            get { return (Compra)GetValue(UltimoBeneficioProperty); }
            set { SetValue(UltimoBeneficioProperty, value); }
        }

        // Using a DependencyProperty as the backing store for UltimaDisponibilizacaoBeneficio.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty UltimoBeneficioProperty =
            DependencyProperty.Register("UltimaDisponibilizacaoBeneficio", typeof(Compra), typeof(VisaDisplayInfoWPF), new UIPropertyMetadata(null));
        
        public Compra UltimaCompra
        {
            get { return (Compra)GetValue(UltimaCompraProperty); }
            set { SetValue(UltimaCompraProperty, value); }
        }

        // Using a DependencyProperty as the backing store for UltimaCompra.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty UltimaCompraProperty =
            DependencyProperty.Register("UltimaCompra", typeof(Compra), typeof(VisaDisplayInfoWPF), new UIPropertyMetadata(null));
        
        public Compra ProximoDeposito
        {
            get { return (Compra)GetValue(ProximoDepositoProperty); }
            set { SetValue(ProximoDepositoProperty, value); }
        }

        // Using a DependencyProperty as the backing store for ProximoDeposito.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty ProximoDepositoProperty =
            DependencyProperty.Register("ProximoDeposito", typeof(Compra), typeof(VisaDisplayInfoWPF), new UIPropertyMetadata(null));

        public ObservableCollection<VisaValeCheckPluginBase> Plugins
        {
            get { return (ObservableCollection<VisaValeCheckPluginBase>)GetValue(PluginsProperty); }
            set { SetValue(PluginsProperty, value); }
        }

        // Using a DependencyProperty as the backing store for Plugins.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty PluginsProperty =
            DependencyProperty.Register("Plugins", typeof(ObservableCollection<VisaValeCheckPluginBase>), typeof(VisaDisplayInfoWPF), new UIPropertyMetadata(new ObservableCollection<VisaValeCheckPluginBase>()));
    }
}
